{to co na kozaka zrobilem bedzie mialo na poczatku wersu }
{}

program liczbythe2nd;
uses crt;
{}const kolorki: array[0..10] of word=(0,1,2,3,4,5,6,7,8,14,9); {stale definiowanie zmiennych, tego nie znamy z lekcji,
ale walic to, pokombinuj sobie Drogi Czytelniku z wartosciami to zobaczysz kolorowy swiat}
var n:byte;

function NWD(x,y:word):word;
     begin
      while (x<>y) do
       if x>y then x:=x-y
        else y:=y-x;
      NWD:=x;
     end;

procedure tabliczka; {wymaga zmiennej n; zeszytowy podpunkt a;}
var x:byte;
begin
clrscr;
gotoxy(3,1);write('dla n=',n);
gotoxy(3,2);write('x':2);
gotoxy(3,3);write('n/x');
for x:=0 to 10 do
    begin
         {}textcolor(kolorki[x]); {zmienimy sobie koloreczki}
         gotoxy(x*6+7,2);
         if x>=0 then write(x:2);
         gotoxy(x*6+7,3);
         if x<>0 then write((n/x):1:1)
          else write('eror');
          {}textcolor(7);
    end;
end;

procedure czynniczki;
var m,i:word;
begin
m:=n;
i:=2;
clrscr;
writeln('rozklad na czynniki pierwsze liczby ',n,' wyglada nastepujaco');
repeat
      if m mod i=0 then
         begin
         writeln(m:3,'|',i);
         m:=m div i;
         i:=2;
         end
         else inc(i);
      until m=1;
      write(1:3);
end;

function ilorazek:real; {iloraz sumy niepatrzystych przez
                                sume parzystych}
var i,mianownik,licznik:byte; {taka pomoc zawsze sie przydaje}
begin
licznik:=0;
mianownik:=0;
     for i:=0 to n do
     if i mod 2<>0 then licznik:=licznik+i
     else mianownik:=mianownik+i;
ilorazek:=licznik/mianownik;
end;

function czypierwsza(x:integer):boolean;
var i:byte;
begin
czypierwsza:=true;
     for i:=2 to x-1 do
          begin
          {writeln(x,' mod ',i,'=',x mod i);}
          {to takie na zalapanie o co kaman}
               if x mod i=0 then
                begin
                czypierwsza:=false;
                break;
                end
          end
end;

procedure liczbypierwsze;
var i,L:byte;
begin
L:=0;
for i:=2 to n do
if czypierwsza(i) then begin inc(L); writeln(L,' liczba pierwsza to: ',i); end
end;

function pierwsza(x:byte):byte;
var i,L:byte;
begin
if x>54 then
begin
writeln('ERROR_: zmienna typu byte pozwala na odnalezienie maxymalnie 54-tej liczby pierwszej');
end else
begin
i:=1;
L:=0;
     repeat
           inc(i);
           if czypierwsza(i) then inc(L);
     until L>=x;
     pierwsza:=i;
end;
end;

BEGIN

clrscr;
writeln('podaj n');
readln(n);
tabliczka;
readln;
czynniczki;
readln;

{ILORAZEK poczatek}
clrscr;
if n>1 then
begin
writeln('Iloraz (sumy liczb nieparzystych)/(sume liczb parzystych) niewiekszych od ',n,' to');
textcolor(white);
write(ilorazek:2:2);
textcolor(7);
end
else
writeln('Iloraz sumy liczb niepatrzystych przez sume liczb patrzystych niewiekszych od ',n,
' nie istnieje, poniewaz niemozliwe jest dzielenie przez 0');
readln;
{ILORAZEK koniec}

{PIERWSZE poczatek}
clrscr;
liczbypierwsze;
readln;
{PIERWSZE koniec}

{PIERWSZA poczatek}
clrscr;
writeln(n,'-ta liczba pierwsza to: ',pierwsza(n));
readln;
{PIERWSZA koniec}

textbackground(4);
writeln('p0zd|24w14/\/\');
readln;

END.